notes:归并排序用于两个有序链表的排序很有效果,此题目重点应该是在想到需要一个额外的伪头节点
题目描述
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
示例1:
1 | 输入:1->2->4, 1->3->4 |
限制:
1 | 0 <= 链表长度 <= 1000 |
方法 归并排序+伪头节点
思路
两个有序链表的排序很显然应该用归并排序进行解题。
我们需要一个头节点作为找到我们合并后链表的首节点的凭据,同时也是作为我们进行递归时移动的指针。
根据归并排序,当我们其中一个链表已经遍历完毕,另一个链表还没有遍历完毕时,不需要重新遍历另一个链表,利用链表的性质直接将其接在我们的新链表后面就可以了。
代码
1 | class Solution { |
复杂度分析
- 时间复杂度$O(n)$。遍历两个链表,线性时间复杂度
- 空间复杂度$O(1)$。只使用了一个伪头节点,常数空间复杂度。
原文链接: https://zijian.wang/2021/06/23/25. 合并两个排序的链表/
版权声明: 转载请注明出处.